package com.xc.tool.utils;


import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.Map;

/**
 * <p>项目名称: Stars</p>
 * <p>描述: json工具类</p>
 * <P>创建人: 小程</p>
 * <P>创建人邮箱: 779943476@qq.com</p>
 * <p>创建时间: 2019/7/1</p>
 *
 * @version v1.0
 */
public class JSONUtils {


    /**
     * <p>功能描述: 把字符串转换成数组集合</p>
     * <p>更新人: 小程</p>
     * <p>更新描述: 添加方法</p>
     * <p>更新人邮箱: 779943476@qq.com</p>
     * <p>更新时间: 2019/7/1</p>
     *
     * @param value 字符串
     * @return 集合
     */
    public static <T> T getListByString(String value) {
        JSONArray obj = new JSONArray().fromObject(value);
        return (T) JSONArray.toArray(obj);
    }

    /**
     * <p>功能描述: 把数组集合转换成字符串</p>
     * <p>更新人: 小程</p>
     * <p>更新描述: 添加方法</p>
     * <p>更新人邮箱: 779943476@qq.com</p>
     * <p>更新时间: 2019/7/1</p>
     *
     * @param obj 集合
     * @return 字符串
     */
    public static String getStringByList(Object obj) {
        return new JSONArray().fromObject(obj).toString();
    }


    /**
     * <p>功能描述: 把字符串转成对象</p>
     * <p>更新人: 小程</p>
     * <p>更新描述: 添加方法</p>
     * <p>更新人邮箱: 779943476@qq.com</p>
     * <p>更新时间: 2019/7/1</p>
     *
     * @param value  字符串
     * @param aClass 对象class
     * @return 对象
     */
    public static <T> T getObjectByString(String value, Class aClass) {
        JSONObject jsonObject = new JSONObject().fromObject(value);
        return (T) JSONObject.toBean(jsonObject, aClass);
    }


    /**
     * <p>功能描述: 把字符串转成对象多级在map里面标明下级class</p>
     * <p>更新人: 小程</p>
     * <p>更新描述: 添加方法</p>
     * <p>更新人邮箱: 779943476@qq.com</p>
     * <p>更新时间: 2019/7/1</p>
     *
     * @param value  字符串
     * @param aClass 对象class
     * @param map    下级class
     * @return 对象
     */
    public static <T> T getObjectByStringAndMap(String value, Class aClass, Map map) {
        JSONObject jsonObject = new JSONObject().fromObject(value);
        return (T) JSONObject.toBean(jsonObject, aClass, map);
    }

    /**
     * <p>功能描述: 把对象转成字符串</p>
     * <p>更新人: 小程</p>
     * <p>更新描述: 添加方法</p>
     * <p>更新人邮箱: 779943476@qq.com</p>
     * <p>更新时间: 2019/7/1</p>
     *
     * @param obj 对象
     * @return 字符串
     */
    public static String getStringByObject(Object obj) {
        return JSONObject.fromObject(obj).toString();
    }


}
